Method and system for adding application defined properties and application defined property sheet pages

ABSTRACT

A method and system for adding application defined properties and application defined property sheet pages are provided. The application defined properties may be added to a list of system defined properties. Once added, the application defined properties may be displayed and edited. In addition, a user may select several objects, display the properties common to all of the objects in a list, and edit the common properties. Moreover, application defined property sheet pages may be added to a set of system defined property sheet pages. A user may then display and edit the application defined property sheet pages. Also, a user may select several objects, display the properties common to all of the objects on a per-property browsing list, and edit the common properties. In addition, a user may select several objects, display the property sheet pages common to all of the objects, and edit the properties on these property sheet pages. Furthermore a user may switch between viewing a property in a list of properties and viewing a property on a property sheet page.

TECHNICAL FIELD

[0001] The present invention relates generally to data processingsystems and, more particularly, to displaying and editing properties ofan object.

BACKGROUND OF THE INVENTION

[0002] Objects often have properties associated with them. A propertydefines an aspect of a state of an object. For instance, a label for aform may be represented as an object, and the label object may have a“Font Name” property that identifies the font of the text contained inthe label. A property also has an associated type, such as string orinteger. An object typically has system defined properties associatedwith it. System defined properties are properties whose types aredefined by the system. An object may also have application definedproperties associated with it. Application defined properties areproperties whose types are defined by an application developer. Anapplication developer also defines an object and properties associatedwith the object.

[0003] Current systems enable a user to display and edit system definedproperties of an object, such as the “Font Name” property. Some systemsoffer the per-property browsing method which allows display and editingof system defined properties which appear in a list, as illustrated inFIG. 1. Other systems offer the property sheet page method which allowsdisplay and editing of system defined properties which appear on systemdefined property sheet pages; as illustrated in FIG. 2. System definedproperty sheet pages are property sheet pages which are defined by thesystem.

[0004] The per-property browsing method displays all system definedproperties of one object on a list, typically in alphabetical order. Forinstance, in FIG. 1, a list of properties for a label object isdepicted. One property name “Font Name” is shown along with the currentvalue “Roman.” This method enables a user to find a particular propertyby searching the list for the system defined property. For example, auser would search through the list illustrated in FIG. 1 to find theproperty name “Font Name.”

[0005] The property sheet page method groups system defined propertiesinto logical subsets which are displayed on system defined propertysheet pages on a per object basis. Each system defined property sheetpage may be used to display or edit a portion of the state of an objectFor example, in FIG. 2, the “Font” group is illustrated on a systemdefined property sheet page for a label object, along with the propertynames “Font Name” and “Font Size.” FIG. 2 shows that the current stateof the object is a “Roman” font name with size 12 print Also, the methodenables a user to find a particular system defined property byrequesting the group that includes the system defined property. Forexample, the method enables a user to find the property name “Font Name”by requesting the “Font” group.

[0006] Additionally, objects generally have system defined propertiesassociated with them. Some objects also have application definedproperties associated with them. Some current systems are limited intheir capabilities in that they do not provide display and editing ofapplication defined properties, although they provide display andediting of system defined properties.

[0007] Some conventional systems lack the ability to provide multipleselection. That is, some conventional systems allow for display andediting of properties of a single object. When several objects havecommon properties which a user wishes to edit, the user selects eachobject and edits its property separately. With multiple selection,however, a user may display and edit the common properties of severalobjects at one time.

[0008] Also, conventional systems do not provide the ability to switchbetween the per-property browsing and property sheet page methods. Someusers may prefer one method over the other. Also, sometimes, a user mayprefer to use one method and then switch to the other method. Therefore,a user should be able to switch between the per-property browsing andproperty sheet page methods.

SUMMARY OF THE INVENTION

[0009] The above-described difficulties encountered by conventionalsystems are overcome by the present invention. In accordance with afirst aspect of the present invention, a method is practiced in a dataprocessing system that includes a video display and a processor thatruns an application program. The data processing system also includes anoperating system that includes a per-property browser. In this method,an object with associated system defined properties is provided. A listof system defined properties is displayed on the video display. Anobject with an associated application defined property is provided. Anidentifier to an application defined property type that is defined bythe application program is obtained. A current value for the applicationdefined property is obtained. The identifier of the application definedproperty type and the current value for the application defined propertyare added to the list of system defined properties displayed on thevideo display.

[0010] In accordance with a further aspect of the present invention, adata processing system includes a video display and a processing meansrunning an operating system and an application program. A list of systemdefined properties is also included in the data processing system. Inthis system, a means for displaying a list of system defined propertieson the video display is provided. Also, a means for providing an objectwith an associated application defined property is included in thesystem. A means for obtaining an identifier to an application definedproperty type defined by the application program is provided. The systemalso includes a menus for obtaining a current value for the applicationdefined property. A means for adding the identifier of the applicationdefined property type and the current value for the application definedproperty to the list of system defined properties displayed on the videodisplay is provided.

[0011] In accordance with an additional aspect of the present invention,a method is practiced in a data processing system having a videodisplay, a processor running an operating system, and a per-propertybrowsing list. In this method, an object with an application definedproperty is provided. Code for a function is called to obtain the typeof the application defined property. Code for a function is called toobtain the current value of the application defined property. The typeand current value of the application defined property are added to theper-property browsing list.

[0012] In accordance with another aspect of the present invention, amethod is practiced in a data processing system that includes a videodisplay and a set of system defined property sheet pages. An operatingsystem that includes a property sheet page browser for browsing propertysheet pages is also included in the data processing system. In thismethod, an object and an associated application defined property sheetpage for the object are provided. The application defined property sheetpage is added to the set of system defined property sheet pagesdisplayed on the video display. The set of system defined property sheetpages is browsed using the property sheet page browser.

[0013] In accordance with yet another aspect of the present invention, adata processing system includes a processing means for running anoperating system, a video display, and a set of system defined propertysheet pages. The system provides means for displaying the set of systemdefined property sheet pages. The system also provides means forproviding an object with an associated application defined propertysheet page. The system further provides means for adding the applicationdefined property sheet page to the set of system defined property sheetpages displayed on the video display.

[0014] In accordance with an additional aspect of the present invention,a method is practiced in a data processing system that includes a videodisplay. In this method, a plurality of objects, each having associatedapplication defined properties, are received. The common applicationdefined properties of the different objects are determined. The commonapplication defined properties are displayed on a per-property browsinglist on a video display.

[0015] In accordance with another aspect of the present invention, amethod is practiced in a data processing system that includes a videodisplay. In this method, a plurality of objects, each having associatedproperty sheet pages, are received. The method determines whether theobjects have common property sheet pages. When the objects have commonproperty sheet pages, the method displays the common property sheetpages on a video display.

[0016] In accordance with yet another aspect of the present invention, amethod is practiced in a data processing system that includes a videodisplay and an operating system that includes a per-property browser anda property sheet page browser. An application defined property isprovided. A per-property browsing list having an entry for theapplication defined property is provided. A property sheet page browserhaving a property sheet page for the application defined property isprovided. When receiving user input indicating a desire to switch fromthe per-property browser to the property sheet page browser, the methodmaps to a property sheet page. When receiving user input indicating adesire to switch from the property sheet page browser to theper-property browser, the method maps to a property sheet pagecontaining a per-property browsing list.

BRIEF DESCRIPTION OF THE DRAWINGS

[0017]FIG. 1 is an illustration of a user interface in which aconventional per-property browsing list is displayed.

[0018]FIG. 2 is an illustration of a user interface in which aconventional property sheet page is displayed.

[0019]FIG. 3 is a block diagram of a computer system which is suitablefor practicing the preferred embodiment of the present invention.

[0020]FIG. 4 is an example of a user interface in which a per-propertybrowsing list is displayed in accordance with the preferred embodimentof the invention.

[0021]FIG. 5 is an example of a user interface in which a per-propertybrowsing drop down list is displayed as it appears in the preferredembodiment of the invention.

[0022]FIG. 6 is an example of a user interface in which an applicationdefined property sheet page is generated in accordance with thepreferred embodiment of the invention.

[0023]FIG. 7 is an example of a user interface in which a windowcontaining menu options is displayed in accordance with the preferredembodiment of the invention.

[0024]FIG. 8 is a flowchart that provides an overview of the stepsperformed to add application defined properties to a per-propertybrowsing list for an object

[0025]FIG. 9 is a flowchart of the steps performed by the per-propertybrowser when either the drop down list button or the property sheet pagemap button have been activated.

[0026]FIG. 10 is a flowchart of multiple selection within per-propertybrowsing.

[0027]FIG. 11A and FIG. 11B show a flowchart that provides an overviewof the steps performed to add application defined property sheet pagesto a set of system defined property sheet pages for an object.

[0028]FIG. 12 is a flowchart that provides the steps performed to editan application defined property sheet page.

[0029]FIG. 13 is a flowchart of the property sheet page browser when itenables switching from application defined property sheet pages to aper-property browsing list.

[0030]FIG. 14 is a flowchart of multiple selection within per-propertybrowsing.

[0031]FIG. 15 is a flowchart of multiple selection by a property sheetpage browser.

DETAILED DESCRIPTION OF THE INVENTION

[0032] The preferred embodiment of the present invention extends thecapabilities of the per-property browsing method by allowing a user todisplay and edit application defined properties for an object. Inaddition, the preferred embodiment enables a user to select severalobjects, to display the properties common to all of the objects in alist, and to edit them. Moreover, the preferred embodiment extends thecapabilities of the property sheet page method by allowing a user todisplay and edit application defined property sheet pages. Also, thepreferred embodiment of the present invention enables a user to selectseveral objects, to display the property sheet pages common to all ofthe objects, and to edit properties on the displayed property sheetpages. Furthermore the preferred embodiment enables a user to switchbetween the per-property browsing and property sheet page methods.

[0033] The preferred embodiment of the present invention is practiced inan object-oriented environment that supports the Microsoft OLE 2.01protocol developed by Microsoft Corporation of Redmond, Wash. In orderto fully understand the preferred embodiment of the present invention,it is helpful to review some of the fundamental concepts employed withinMicrosoft OLE 2.01.

[0034] An “object class” is the definition of both a data structure andfunctions that manipulate the data structure. An “object” is an instanceof an object class. An “interface” is a group of semantically relatedfunctions that are organized into a named unit. The name of the unit isthe identifier of the interface. Interfaces have no instantiation inthat the interface does not include code for implementing the functionsthat are identified in the interface; rather, the interface specifies aset of signatures for functions. “Instantiation” refers to the processof creating in-memory structures that represent an object so that theoperations can be invoked on the object. When an object “supports” aninterface, the object provides code for the function specified by theinterface. Hence, an object that supports an interface is responsiblefor providing the code for implementing the functions of the interface.The code that is provided by the object must comply with the signaturesspecified by the interface.

[0035]FIG. 3 is a block diagram of a computer system 1 which is suitablefor practicing the preferred embodiment of the present invention. Thecomputer system 1 includes a central processing unit (CPU) 2 that isconnected to a number of input/output devices, including mouse 4,keyboard 10, and video display 12. The computer system 1 also includes anetwork interface 6 for interfacing the computer system with a network.Memory 8 stores data and code. Specifically, memory 8 holds a copy of anoperating system, objects, a per-property browser, and a property sheetpage browser. A bus 14 connects the components of the computer system.

[0036] Before discussing the code and structures used to facilitate thecode, the user interface will be discussed. Specifically, FIGS. 4-7represent sample user interfaces producing an illustrative embodiment ofthe present invention, which will be described before the flowcharts ofFIGS. 8-5 are discussed.

[0037]FIG. 4 is an example of a user interface in which a per-propertybrowsing list 24 is displayed in accordance with the preferredembodiment of the invention. The user interface includes a per-propertybrowser 22 that enables a user to browse the current property valuesassociated with properties of an object. The per-property browser 22 iswithin a window 20 that is produced by a development environment Thedevelopment environment is a set of resources made available to the userof a system which includes code providing system defined interfaces. Theper-property browser 22 is part of the development environment, and itprovides the framework within which a per-property browsing list 24 isdisplayed. Each element in the per-property browsing list 24 includes aproperty name 26, a current property value 28, a drop down list button30, and a property sheet page map button 32. The per-property browsinglist 24 has system defined properties. The per-property browser 22enables a user to add application defined properties to the per-propertybrowsing list 24. Then, the per-property browser 22 displays both thesystem defined properties and the application defined properties in theper-property browsing list 24. For instance, the per-property browsinglist 24 has the property name 26 “Font Name” and the current propertyvalue 28 “Roman.”

[0038] A user may search through the per-property browsing list 24 bydepressing arrow keys on the keyboard 10. As the user depresses thearrow keys, the currently selected property is incremented so that thenext property in sequence is selected. A visual cue to the user, such ashighlighting, is generally provided to identify the currently selectedproperty. In addition, a user may search through the per-propertybrowsing list by using the scroll bar 33. The scroll bar 33 has a scrollbox 34, a scroll down arrow 35, and a scroll up arrow 36. In order touse the scroll bar 33, the user points at the scroll box 34 with a userpointing device, such as a mouse 4, and while pointing at the scroll box34, enters a user selection indicator, such as a click of a designatedmouse button. Then, while keeping the mouse button depressed, the usermay drag the scroll box 34, up or down, to view different portions ofthe per-property browsing list 24. A mouse is a user pointing device,which has one or more mouse buttons, and clicking on a mouse buttonoutputs a user selection indicator which selects the element pointed atby the mouse. In order to scroll the per-property browsing list 24 by asingle element, either up or down, a user may use a mouse to point atthe scroll up arrow 35 or scroll arrow down 36 and click a designatedmouse button. Additionally, if a user uses a mouse to point at thescroll up arrow 35 or scroll down arrow 36, and keeps the mouse buttondepressed, the scrolling continues until the mouse button is released.This allows a user to quickly scroll through the per-property browsinglist 24. An element may be selected from the per-property browsing list24 by pointing at it with a mouse 4 and clicking a designated mousebutton. For the following discussion, “mouse” will be used in place of“user pointing device,” but one skilled in the art would appreciate thatother user pointing devices would be equivalent.

[0039] After selecting a property, a user may activate the propertysheet page map button 32 to switch to a corresponding property sheetpage that displays values of the property group containing the selectedproperty. The, property sheet page map button 32 may be activated byusing a pointing device, such as a mouse 4, to point at the propertysheet page map button 32 and by entering a user selection indicator,such as a click on a designated mouse button. In addition, a user mayactivate the drop down list button 30 to view a drop down list, whichcontains other possible values for the selected property. Any drop downlist button may be activated just as the property sheet page map buttonis activated.

[0040]FIG. 5 is an example of a user interface in which a per-propertybrowsing drop down list 37 is displayed as it appears in the preferredembodiment of the invention. A drop down list 37 is displayed when thedrop down list button 30 has been activated for a particular property.The drop down list 37 shows other possible values for the property. Forinstance, when the property name 26 is “Font Name” and the currentproperty value is “Roman” 28, the drop down list 37 indicates that otherpossible values include “Modem” and “Script.” By using the scroll bar38, as discussed above, or by depressing the page up or page down keyson the keyboard 10, a user may scroll through the possible values. Anelement may be selected from the drop down list 37 by pointing at itwith a mouse 4 and clicking a designated mouse button. In addition, anelement may be selected by depressing the arrow keys on the keyboard 10in order to move to the desired element When an element is selected fromthe drop down list 37, the element replaces the current property value.For instance, if the element “Modem” were selected, it would replace“Roman” as the current property value. In the following discussion, eachdrop down list may be, scrolled in this manner and elements in the dropdown list may be selected as described here.

[0041]FIG. 6 is an example of a user interface in which an applicationdefined property sheet page 44 is generated in accordance with thepreferred embodiment of the invention. A property sheet page browser 42is within a window 40. The property sheet page browser 42 is part of thedevelopment environment, and it provides the framework within which anapplication defined property sheet page 44 displays itself. The propertysheet page browser 42, contains a tab 45 which identifies a propertygroup. For instance, tab 45 indicates that the property sheet page isthe “Font” property group. Other tabs 46 are also displayed alongsidetab 45 in such a way that the display resembles a set of tabbed indexcards. The other tabs 46 represent other property groups associated witha particular object. The application defined property sheet page 44contains various properties of an object which may be displayed andedited. For example, the “Font” property group 45 has property names“Font Name” 47 and “Font Size” 52. The property name “Font Name” 47 hasa current property value 48 and a drop down list button 49. When thedrop down list button 49 for “Font Name” is activated by a user, thedrop down list 50 for “Font Name” 47 is displayed. The drop down list 50shows other possible values for the “Font Name” property. Similarly, theproperty name “Font Size” 52 has a current property value 53 and a dropdown list button 54, which when activated displays a drop down list withother possible size values. In addition the property sheet page browser42 has an OK button 55, a CANCEL button 56, and an APPLY button 57. Eachbutton may be activated as the drop down list button is activated.Additionally, a user may select one of these buttons using a tab key tomove to the button, and a user may activate the button by depressing theenter key on the keyboard 10. The OK button applies any modificationsthe user made while editing and closes the property sheet page browser.The CANCEL button does not apply any modifications the user made whileediting and closes the property sheet page browser. The APPLY buttonapplies the modifications the user made, while editing the propertysheet page, to the object or objects associated with the applicationdefined property sheet page.

[0042]FIG. 7 is an example of a user interface in which a window 60containing menu options is displayed in accordance with the preferredembodiment of the invention. The window 60 contains a menu bar 62 with anumber of menu options. A user may select the “File” menu 64. When the“File” menu is selected, a drop down menu 66 is shown. The drop downmenu 66 contains elements relating to a file, including the elementProperties 68. A user may select an element in a drop down menu in thesame manner as selecting an element in a drop down list. A user mayselect Properties 68 in order to display and edit a property. SelectingProperties will enable a user to then display and edit properties of anobject using either the per-property browsing method or the propertysheet page method.

[0043] Now that the user interfaces have been discussed, the followingdiscussion will be directed to code. First, however, it may be useful todiscuss the interfaces that enable per-property browsing and propertysheet page browsing. The per-property browser calls theIPerPropertyBrowsing interface. The object having application definedproperties supports the IPerPropertyBrowsing interface. The propertysheet page browser calls the ISpecifyPropertyPages interface, theIPropertyPage interface, and the IPropertyPageSite interface. Anapplication defined property sheet page supports the IPropertyPage andthe IPropertyPageSite interfaces. An object supports theISpecifyPropertyPages interface. These interfaces will be discussedbelow.

[0044] Before discussing the interfaces used by the per-property browserand property sheet page browser, it is useful to review some fundamentalconcepts of the Microsoft OLE 2.01 protocol. IUnknown is an interfacethat all objects must support by definition to comply with Microsoft OLE2.01. One function identified in the IUnknown interface is theQueryInterface ( ) function. When called, the QueryInterface functionretrieves a pointer to an interface that is identified by an inputparameter that is passed to the function. By using the QueryInterface () function on an object, the per-property browser and the property sheetpage browser can switch between interfaces provided by that object, andthus call functions within the different interfaces supported by thatobject in order to provide per-property browsing and property sheet pagebrowsing on that object

[0045]FIG. 8 is a flowchart that provides an overview of the stepsperformed to add application defined properties to a per-propertybrowsing list for an object. The per-property browser first obtains thetype of the application defined property (step 70) by using the TypeInfointerface defined by Microsoft OLE 2.01 and implemented by an object.Then, the per-property browser calls the QueryInterface ( ) function onthe object that has the application defined property to obtain a pointerto the IPerPropertyBrowsing interface provided by the present invention(step 72). The IPerPropertyBrowsing interface is defined as follows inC++.

[0046] interface IPerPropertyBrowsing:IUnknown {

[0047] GetDisplayString(DISPID dispid, BSTR FAR* lpbstr);

[0048] MapPropertyToPage(DISPID dispid, LPCLSID lpclsid);

[0049] GetPredefinedStrings(DISPID dispid, CALPOLESTR FAR*lpcaStringsOut, CADWORD FAR* IpcaCookiesOut);

[0050] GetPredefinedValue(DISPID dispid, DWORD dwcookie, VARIANT FAR*lpvarOut); };

[0051] The GetDisplayString ( ) function retrieves a character stringrepresenting the current value of the application defined property to bedisplayed. The MapPropertyToPage ( ) function enables switching from aper-property browsing list to a property sheet page containing theparticular property. In particular, this function maps the property to aproperty sheet page. The GetFredefinedStrings ( ) function andGetPredefinedValue ( ) function return possible values for a property,along with display names for the values.

[0052] After obtaining the pointer to the IPerPropertyBrowsing.Interface, the per-property browser calls the GetDisplayString ( )function to obtain the current property value of the property (step 73).Once the per-property browser has the property type and property value,the per-property browser can add these application defined properties toa per-property browsing list along with system defined properties (step74).

[0053]FIG. 9 is a flowchart of the steps performed by the per-propertybrowser when either the drop down list button or the property sheet pagemap button have been activated. First, the per-property browser receivesuser input which indicates which step the per-property browser shouldtake next (step 80). Then the per-property browser determines whetherthe user input is a request to activate a drop down list button, whichindicates a desire to view the drop down list (step 82). If the userinput requests activation of the drop down list button, then theper-property browser calls the GetPredefinedStrings ( ) function toobtain character strings corresponding to the possible values of theproperty (step 84). Then the drop down list is displayed (step 86). Ifthe user input is not a request to activate the drop down list button,then the per-property browser determines if the user input is a requestto select an element in a drop down list which is already displayed(step 88). If the user input is a request to select an element, then theper-property browser calls the GetPredefinedValue ( ) function to obtainthe value corresponding to the user's choice (step 90). Then this valuereplaces the current property value (step 91). For example, if theper-property browser receives user input requesting activation of thedrop down list button for a color property, which allows selection of acolor for text, then the per-property browser calls theGetPredefinedStrings( ) function. The GetPredefinedStrings( ) functionmay return character strings such as “Red,” “Blue,” and “Green,” whichcorrespond to possible values of the color property. When the userselects one of these character strings, such as “Red,” the per-propertybrowser calls the GetPredefinedValue ( ) function. TheGetPredefinedValue ( ) function returns the actual value correspondingto the selected character string, such as an RGB value for the selectedcolor “red.”

[0054] Continuing with the flowchart, if the user input is not a requestto select an element, then the per-property browser determines if theuser input is a request to activate the property sheet page map button(step 92). If the user input is a request to activate a property sheetpage map button, then the user desires to view the currently selectedproperty on a property sheet page. The per-property browser calls theMapPropertyToPage ( ) function to display the currently selectedproperty on a property sheet page (step 93). In particular, theper-property browser calls the MapPropertyToPage ( ) function to obtainan application defined property sheet page identifier for a propertysheet page. Then, the per-property browser invokes the property sheetpage browser, passing to it the class identifier returned by theMapPropertyToPage ( ) function. Then, the property may be edited on aproperty sheet page (step 94). If the user input is a request to edit(step 95), then the per-property browser allows editing (step 94).Editing is done by moving to the current property value of a property,using either arrow keys or a mouse, and then manually changing thecurrent property value. If the user input is anything else, theper-property browser ignores the user input and loops to receive moreinput.

[0055]FIG. 10 is a flowchart of multiple selection within per-propertybrowsing. Multiple selection allows a user to view the common propertiesof several objects at once. First, the per-property browser receives aplurality of objects (step 97). Then, the per-property browserdetermines which properties the objects have in common (step 98). Thenthe per-property browser displays the common properties in aper-property browsing list (step 99).

[0056]FIG. 11A and FIG. 11B show a flowchart that provides an overviewof the steps performed to add application defined property sheet pagesto a set of system defined property sheet pages for an object. First,the property sheet page browser must obtain an interface pointer to theISpecifyPropertyPages interface of the object whose properties are to bebrowsed (step 100). The ISpecifyPropertyPages interface is defined asfollows.

[0057] interface ISpecifyPropertyPages:IUnknown {

[0058] GetPages(CAUUID FAR* pPages); };

[0059] The GetPages function returns a list of identifiers to theapplication defined property sheet pages associated with an object. Oncethe property sheet page browser obtains the ISpecifyPropertyPagesinterface pointer, the property sheet page browser calls the GetPages () function to obtain a list of application defined property sheet pageidentifiers (step 102).

[0060] Using the application defined property sheet page identifiers,the property sheet page browser adds each application defined propertysheet page to the current set of property sheet pages, which alreadycontain system defined property sheet pages. The property sheet pagebrowser selects the first application defined property sheet pageidentifier (step 104). Then the property sheet page browser creates aninstance of an application defined property sheet page for thatapplication defined property sheet page identifier (step 106). Next, theproperty sheet page browser obtains an interface pointer toIPropertyPage, which is supported by the application defined propertysheet page (step 108). The IPropertyPage interface is defined asfollows.

[0061] interface IPropertyPage:IUnknown {

[0062] SetPageSite(LPPROPERTYPAGESITE pPageSite);

[0063] Activate(HWND hwndParent, LPCRECT lprc, BOOL bModal);

[0064] Deactivate();

[0065] GetPageInfo(LPPROPPAGEINFO pPageInfo);

[0066] SetObjects(ULONG cObjects, LPUNKNOWN FAR* ppunk);

[0067] Show(UINT nCmdShow);

[0068] Move(LPCRECT prect);

[0069] IsPageDirty();

[0070] Apply();

[0071] Help(LPCOLESTR lpszHelpDir);

[0072] TranslateAccelerator(LPMSG lpMsg); };

[0073] The property sheet page browser calls the SetPageSite ( )function to provide the application defined property sheet page with thesite object it should use to communicate with the property sheet pagebrowser. For instance, the application defined property sheet page woulduse the site object to obtain information from the property sheet pagebrowser such as which language the application defined property sheetpage should use for displaying its contents. The property sheet pagebrowser calls the Activate ( ) function to provide the applicationdefined property sheet page with information on where to display itself.The property sheet page browser calls the Show ( ) function to displaythe application defined property sheet page or to hide it. The propertysheet page browser calls the Deactivate ( ) function to destroy theresources created by a preceding call to the Activate ( ) function. Theproperty sheet page browser calls the GetPageInfo ( ) function to obtaininformation about the application defined property sheet page, such asthe application defined property sheet page size and whether theapplication defined property sheet page supports the help function. Theproperty sheet page browser calls the SetObjects ( ) function to pass tothe application defined property sheet page a set of objects so that theapplication defined property sheet page knows what objects to getproperty values from and apply modifications made by a user whileediting to (e.g., in case of multiple selection, multiple objects arepassed). The property sheet page browser calls the Move ( ) function tomove or resize the application defined property sheet page. The propertysheet page browser calls the IsPageDirty ( ) function to determine ifthe user modified the application defined property sheet page. Ifmodifications were made, then the property sheet page browser enablesthe Apply button. The property sheet page browser calls the Apply ( )function to tell the application defined property sheet page to applymodifications to objects. The property sheet page browser calls the Help( ) function to display help information about the application definedproperty sheet page. The property sheet page browser calls theTranslateAccelerator ( ) function to communicate certain window messageswith the application defined property sheet page.

[0074] After obtaining the IPropertyPage interface pointer, the propertysheet page browser calls the GetPageInfo ( ) function to obtainapplication defined property sheet page information (step 110). Thisinformation is stored in the following data structure.

[0075] typedef struct tagPROPPAGEINFO {

[0076] size_t cb;

[0077] LPOLESTR pszTitle;

[0078] SIZE size;

[0079] LPOLESTR pszDocString;

[0080] LPOLESTR pszHelpFile;

[0081] DWORD dwHelpContext; }PROPPAGEINFO;

[0082] This application defined property sheet page information includespszTitle, which is the title of the application defined property sheetpage, size, which is the application defined property sheet page size,and pszhelpfilehich is a help file for the application defined propertysheet page.

[0083] Next, the property sheet page browser determines the location ofthe application defined property sheet page (step 112) on the display.The property sheet page browser provides this location information tothe application defined property sheet page (step 114). The propertysheet page browser then calls the SetPageSite ( ) function to give theapplication defined property sheet page a means of communicating withthe property sheet page browser (step 116). After this, the propertysheet page browser calls the SetObjects ( ) function to provide theapplication defined property sheet page with the set of objects to whichit applies modifications made by a user (step 118). That is, more thanone object may support the same application defined property sheet page,and if this is the case, then an application defined property sheet pagewhich is modified applies the modifications to each object whichsupports the application defined property sheet page. Following this,the property sheet page browser calls the Activate ( ) function toactivate an application defined property sheet page (step 120). Next,the property sheet page browser calls the Show ( ) function to displaythe application defined property sheet page (step 122). Once the Show () function is called, the application defined property sheet pageappears to be at the front of what appears to be a set of tabbed indexcards. Then the property sheet page browser determines whether there aremore application defined property sheet page identifiers (step 124), andif there are, it selects the next application defined property sheetpage identifier and processes it to add another application definedproperty sheet page to its set of property sheet pages (step 126), elseit returns.

[0084]FIG. 12 is a flowchart that provides the steps performed to editproperties on an application defined property sheet page. First, theapplication defined property sheet page obtains a pointer to theIPropertyPageSite interface, which is supported by the applicationdefined property sheet page (step 140). The IPropertyPageSite interfaceis defined as follows.

[0085] interface IPropertyPageSite:IUnknown {

[0086] OnStatusChange(DWORD flags);

[0087] GetLocaleID(LCID FAR* pLocaleID);

[0088] GetPageContainer(LPUNKNOWN FAR* ppUnk);

[0089] TranslateAccelerator(LPMSG lpMsg); }

[0090] The application defined property sheet page calls theOnStatusChange function to inform the property sheet page browser thatthe user made modifications while editing. The application definedproperty sheet page calls the GetLocaleID ( ) function to learn whatlanguage to use for displaying its, contents. The application definedproperty sheet page calls the GetPageContainer ( ) function to getaccess to the per-property browser if the application defined propertysheet page has some special knowledge about what interfaces aresupported by the property sheet page browser. The property sheet pagecalls the TranslateAccelerator ( ) function to communicate certainwindow messages with the property sheet page browser.

[0091] Continuing with the flowchart, when the user has modified anapplication defined property sheet page, the property sheet page informsthe property sheet page browser that the user modified the applicationdefined property sheet page by calling the function OnStatusChange ( )(step 142). In response to this, the property sheet page browser callsthe IsPageDirty ( ) function to confirm that the user has made a change(step 144). If the user has made a change to the property sheet page,the property sheet page browser enables the Apply button (step 146).When the Apply button is enabled, if a user selects the Apply button,the modifications the user made, while editing, to the applicationdefined property sheet page are applied to the set of objects supportingthat application defined property sheet page. After enabling the Applybutton, the property sheet page browser determines whether the useractivated the apply button (step 148). If the user did activate theapply button, then the property sheet page browser calls the Apply ( )function (step 150), else it returns. Calling the Apply ( ) functiontells the application defined property sheet page to apply themodifications to the set of objects it received from the SetObjects ( )function (step 118 of FIG. 11B).

[0092]FIG. 13 is a flowchart of the property sheet page browser when itenables switching from an application defined property sheet page to aper-property browsing list. A particular application defined propertysheet page implements the user interface for a per-property browsinglist (step 170). Then, the property sheet page browser determineswhether a user requested the per-property browsing list (step 172). If auser did request the list, the property sheet page browser calls theShow ( ) function to show the application defined property sheet pagewhich implements the user interface for a per-property browsing list(step 174), else it returns.

[0093]FIG. 14 is a flowchart of multiple selection within per-propertybrowsing. Multiple selection allows a user to view the commonapplication defined properties of several objects at once. Fi theproperty sheet page browser receives a plurality of objects (step 180).Then, the property sheet page browser determines which applicationdefined properties the objects have in common (step 182). Then theproperty sheet page browser displays the common application definedproperties on a per-property browsing list (step 184).

[0094]FIG. 15 is a flowchart of multiple selection by a property sheetpage browser. Multiple selection allows a user to view the commonproperties of several objects at once. First, the property sheet pagebrowser receives a plurality of objects (step 190). Then, the propertysheet page browser determines which property sheet pages the objectshave in common (step 192). Then the property sheet page browser displaysthe common property sheet pages (step 194).

[0095] Although the methods and systems of the present invention havebeen described in terms of a preferred embodiment, it is not intendedthat the invention be limited to this embodiment. Modifications withinthe spirit of the invention will be apparent to those skilled in the artThe scope of the present invention is defined only by the claims thatfollow.

What is claimed is:
 1. In a data processing system having a videodisplay, a processor that runs an application program, and an operatingsystem that includes a per-property browser, a method comprising thesteps of: providing an object with associated system defined properties;displaying a list of system defined properties on the video display;providing an object with an associated application defined property;obtaining an identifier to an application defined property type that isdefined by the application program; obtaining a current value for tieapplication defined property; and adding an identifier of theapplication defined property type and the current value for theapplication defined property to the list of system defined propertiesdisplayed on the video display.
 2. The method of claim 1 , furthercomprising the step of, for each system defined property, determiningwhether the system defined property is also on a property sheet page. 3.The method of claim 2 , further comprising the step of providing aproperty sheet page map button for displaying the property sheet pagecontaining the system defined property when the system defined propertyis also on the property sheet page.
 4. The method of claim 3 , furthercomprising the steps of: providing code to map the system definedproperty to the property sheet page; receiving user input to activatethe property sheet page map button; calling the provided code to map tothe property sheet page for the system defined property; and displayingthe property sheet page for the system defined property.
 5. The methodof claim 1 wherein the step of adding the identifier of the applicationdefined property type and the current value for the application definedproperty to the list comprises the step of determining whether theapplication defined property is also on a property sheet page.
 6. Themethod of claim 5 , further comprising the step of providing a propertysheet page map button for displaying the property sheet page containingthe application defined property when the application defined propertyis also on the property sheet page.
 7. The method of claim 6 , furthercomprising the steps of: providing code to map the application definedproperty to the property sheet page; receiving user input to activatethe property sheet page map button; calling the provided code to map tothe property sheet page for the application defined property; anddisplaying the property sheet page for the application defined property.8. The method of claim 1 , further comprising the step of, for eachsystem defined property, determining whether the system defined propertyhas a drop down list associated with it.
 9. The method of claim 8 ,further comprising the step of providing a drop down list button fordisplaying the drop down list when the system defined property has adrop down list associated with it.
 10. The method of claim 9 , furthercomprising the steps of: providing code to obtain entries for the dropdown list; receiving user input to activate the drop down list button;calling the provided code to obtain entries for the drop down list; anddisplaying the drop down list on the video display.
 11. The method ofclaim 1 wherein the step of adding the identifier of the applicationdefined property type and the current value for the application definedproperty to the list comprises the step of determining whether theapplication defined property has a drop down list associated with it.12. The method of claim 11 , further comprising the step of providing adrop down list button for displaying the drop down list when theapplication defined property has a drop down list associated with it.13. The method of claim 12 , further comprising the steps of: providingcode to obtain entries for the drop down list; receiving user input toactivate the drop down list button; calling code to obtain the entriesfor the drop down list; and displaying the drop down list on the videodisplay.
 14. The method of claim 1 , further comprising the step ofediting the list of properties by modifying a property in the list onthe video display.
 15. In a data processing system having a videodisplay, a processing means running an operating system and anapplication program, and a list of system defined properties, a systemcomprising: means for displaying a list of the system defined propertieson the video display; means for providing an object with an associatedapplication defined property; means for obtaining an identifier to anapplication defined property type defined by the application program;means for obtaining a current value for the application definedproperty; means for adding the identifier to the application definedproperty type and the current value of the application defined propertyto the list of system defined properties displayed on the video display.16. The data processing system of claim 15 , further comprising: meansfor determining whether to provide a property sheet page map button; andmeans for providing the property sheet page map button when it isdetermined that it should be provided.
 17. The data processing system ofclaim 15 , further comprising: means for determining whether to providea drop down list button; and means for providing the drop down listbutton when it is determined that it should be provided.
 18. In a dataprocessing system having a video display, a processor running anoperating system, and a per-property browsing list, a method comprisingthe steps of: providing an object with an application defined property;providing code for a function to obtain the type of the applicationdefined property; providing code for a function to obtain the currentvalue of the application defined property; calling the provided code fora function to obtain the type of the application defined property;calling the provided code for a function to obtain the current value ofthe application defined property; and adding the type and current valueof the application defined property to the per-property browsing list.19. The method of claim 18 wherein the step of adding further comprisesdisplaying the application defined property in the per-property browsinglist on the video display.
 20. In a data processing system having avideo display, an operating system that includes a property sheet pagebrowser for browsing property sheet pages, and a set of system definedproperty sheet pages, a method comprising the steps of: providing anobject and an associated application defined property sheet page for theobject; adding the application defined property sheet page to the set ofsystem defined property sheet pages displayed on the video display; andbrowsing the set of system defined property sheet pages using theproperty sheet page browser.
 21. The method of claim 20 wherein the stepof adding an application defined property sheet page comprises the stepof calling code to show the application defined property sheet page onthe video display.
 22. The method of claim 20 wherein the step ofbrowsing comprises the step of displaying a different property sheetpage on the video display.
 23. The method of claim 20 , furthercomprising the steps of: displaying the application defined propertysheet page with a tab indicating a name for the application definedproperty sheet page; displaying each property on the application definedproperty sheet page; and displaying associated drop down list buttonswith each property on the application defined property sheet page. 24.The method of claim 23 , further comprising the steps of: receiving userinput activating the drop down list button; and displaying a drop downlist on the video display.
 25. The method of claim 20 wherein the stepof browsing comprises the step of modifying the application definedproperty sheet page on the video display by changing a current value ofa property on the application defined property sheet page.
 26. In a dataprocessing system having a processing means for running an operatingsystem, a video display, and a set of system defined property sheetpages, the system comprising: means for displaying the set of systemdefined property sheet pages; means for providing an object with anassociated application defined property sheet page; and means for addingthe application defined property sheet page to the set of system definedproperty sheet pages displayed on the video display.
 27. The system ofclaim 26 , further comprising means for modifying the applicationdefined property sheet page on the video display.
 28. In a dataprocessing system having a video display, a method comprising the stepsof: receiving a plurality of objects, each having associated applicationdefined properties; determining common application defined properties ofthe objects; and displaying the determined common application definedproperties on a per-property browsing list on a video display.
 29. Themethod of claim 28 wherein the step of displaying the determined commonapplication defined properties includes the step of displaying thedetermined common application defined properties with a current propertyvalue when the current property value for each application definedproperty of an object is the same and displaying an unmatched propertiesindicator when the current property value for each application definedproperty of an object is not the same.
 30. In a data processing systemhaving a video display, a method comprising the steps of: receiving aplurality of objects, each having associated property sheet pages;determining whether the objects have common property sheet pages; andwhen the objects have common property sheet pages, displaying thedetermined common property sheet pages on a video display.
 31. Themethod of claim 30 wherein the step of displaying the common propertysheet pages includes the step of displaying each property sheet pagewith current property values when the property sheet page of each objectis the same and displaying an unmatched property sheet page indicatorwhen the property sheet page of each object is not the same.
 32. In adata processing system having a video display and an operating systemthat includes a per-property browser and a property sheet page browser,a method comprising the steps of: providing an application definedproperty; providing a per-property browsing list having an entry for theapplication defined property; providing a property sheet page browserhaving a property sheet page for the application defined property; whenreceiving user input indicating a desire to switch from the per-propertybrowser to the property sheet page browser, mapping to a property sheetpage; and when receiving user input indicating a desire to switch fromthe property sheet page browser to the per-property browser, mapping toa property sheet page containing a per-property browsing list.
 33. Themethod of claim 32 wherein the step of providing a per-property browsinglist comprises providing the per-property browsing list where each entryhas a property sheet page map button.
 34. The method of claim 32 whereinthe step of providing a property sheet page comprises providing theproperty sheet page with a tab indicating it contains the per-propertybrowsing list.